#ifndef HERRAMIENTA_H
#define HERRAMIENTA_H

#include <QMouseEvent>
#include "visor3d_global.h"

class Visor3d;

class VISOR3D_EXPORT Herramienta3d 
{
public:
    Herramienta3d() { }
    virtual ~Herramienta3d() { }

    virtual void activar() = 0;
    virtual void procesarEventoMove(QMouseEvent* evento, Visor3d* visor3d) = 0;
    virtual void procesarEventoPress(QMouseEvent* evento, Visor3d* visor3d) = 0;
    virtual void procesarEventoRelease(QMouseEvent* evento, Visor3d* visor3d) = 0;
    virtual void procesarEventoWheel(QWheelEvent* evento, Visor3d* visor3d) = 0;
};

class VISOR3D_EXPORT HerramientaPrueba : public Herramienta3d
{
public:
    HerramientaPrueba() { procesando = false; }
    virtual ~HerramientaPrueba() { }

    void activar();
    void procesarEventoMove(QMouseEvent* evento, Visor3d* visor3d);
    void procesarEventoPress(QMouseEvent* evento, Visor3d* visor3d);
    void procesarEventoRelease(QMouseEvent* evento, Visor3d* visor3d);
    void procesarEventoWheel(QWheelEvent* evento, Visor3d* visor3d);

private:
    bool procesando;
    QPoint posicionInicial;
};

class VISOR3D_EXPORT HerramientaPrueba2d : public Herramienta3d
{
public:
    HerramientaPrueba2d() { procesando = false; }
    virtual ~HerramientaPrueba2d() { }

    void activar();
    void procesarEventoMove(QMouseEvent* evento, Visor3d* visor3d);
    void procesarEventoPress(QMouseEvent* evento, Visor3d* visor3d);
    void procesarEventoRelease(QMouseEvent* evento, Visor3d* visor3d);
    void procesarEventoWheel(QWheelEvent* evento, Visor3d* visor3d);

private:
    bool procesando;
    QPoint posicionInicial;
};

#endif // HERRAMIENTA_H
